﻿#pragma warning(disable: 4477)
#pragma warning(disable: 4996)
#pragma warning(disable: 6031)
#pragma warning(disable: 6054)
/*
 */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <assert.h>

typedef double Real;
const Real PI = 3.14159265359;

typedef struct TContext_s
{
	int k;
	int n;
	char* pv[100];
	char v[100][11];
}TContext;

TContext context;

void read_data(TContext* ctx)
{
	scanf("%d", &ctx->n);
	scanf("%d", &ctx->k);
	for (int i = 0; i < ctx->n; ++i) {
		scanf("%s", ctx->v[i]);
		ctx->pv[i] = ctx->v[i];
	}
}

void do_task(TContext * ctx)
{
	char* p = NULL;
	char buf[255];

	for (int i = 0; i < ctx->k; ++i)
	{
		p = ctx->pv[0];
		for (int j = 1; j < ctx->n-i; ++j)
		{
			if (strcmp(p, ctx->pv[j]) >= 0) {
				ctx->pv[j-1] =ctx->pv[j];
				ctx->pv[j] = p;
			}
			p = ctx->pv[j];
		}
	}
	for (int i = 0; i < ctx->n; ++i)
		printf("%s\n", ctx->pv[i]);
}

void solve(TContext* ctx)
{
	read_data(ctx);
	do_task(ctx);
}

int main()
{
	freopen("D:/Develop/GitRepos/MOOC/浙江大学/数据结构/201906/DataStructure/M2019秋C入门和进阶练习集/7-132.txt", "r", stdin);
	solve(&context);
	return 0;
}
